A computing device, such as a personal computer or a network device, may include an operating system (OS) that provides an interface between hardware of the computing device and software processes that are executed by the computing device. The OS may particularly include a kernel, which may be a central component of the OS and may act as a bridge between the software processes and the actual data processing done at the hardware level. One of the kernel's responsibilities may include switching the active process between a number of possible processes. Switching between active processes may be performed at a fast enough rate so that the computing device may appear to be simultaneously executing the processes.
Some kernels may be preemptive kernels, which means that the kernel may interrupt an ongoing process and switch the current system context to another process. Other kernels may be non-preemptive. In a non-preemptive kernel, the kernel may wait for the process running in the current system context to relinquish control before switching to a different process. Preemptive kernels may more reliably guarantee that each running process will receive a regular “slice” of operating time. Non-preemptive kernels, in contrast, may be more efficient than preemptive kernels as less overhead may be required to switch process contexts.
In a non-preemptive kernel, it may be important to avoid processes that run for too long without relinquishing the processor. The presence of such processes can adversely impact the latency requirements of other processes. This can be particularly problematic with operating systems used in computing devices such as a network device (e.g., router, switch, and/or network security device), where excess latency can lead to protocol expiries and connection drops.